const mod = 10

func pow(x, n int) int {
    res := 1
    for ; n > 0; n /= 2 {
        if n%2 > 0 {
            res = res * x % mod
        }
        x = x * x % mod
    }
    return res
}

const mx = 100_000

var f, invF, p2, p5 [mx + 1]int

func init() {
    f[0] = 1
    for i := 1; i <= mx; i++ {
        x := i
        // 2 的幂次
        e2 := bits.TrailingZeros(uint(x))
        x >>= e2
        // 5 的幂次
        e5 := 0
        for x%5 == 0 {
            e5++
            x /= 5
        }
        f[i] = f[i-1] * x % mod
        p2[i] = p2[i-1] + e2
        p5[i] = p5[i-1] + e5
    }
    invF[mx] = pow(f[mx], mod-2)
    for i := mx; i > 0; i-- {
        x := i
        x >>= bits.TrailingZeros(uint(x))
        for x%5 == 0 {
            x /= 5
        }
        invF[i-1] = invF[i] * x % mod
    }
}

func comb(n, k int) int {
    return f[n] * invF[k] % mod * invF[n-k] % mod *
        pow(2, p2[n]-p2[k]-p2[n-k]) % mod *
        pow(5, p5[n]-p5[k]-p5[n-k]) % mod
}

func solve(s string) (res int) {
    for i, b := range s {
        res += comb(len(s)-1, i) * int(b-'0')
    }
    return res % mod
}

func hasSameDigits(s string) bool {
    return solve(s[:len(s)-1]) == solve(s[1:])
}

// 作者：灵茶山艾府
// 链接：https://leetcode.cn/problems/check-if-digits-are-equal-in-string-after-operations-ii/solutions/3086169/mo-shu-wei-he-shu-shi-de-zu-he-shu-by-en-8x7t/
// 来源：力扣（LeetCode）
// 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。